
export default {
  data() {
    return {
      currentPage: 1, // 当前选中页
      totalPage: 0, // 总条数
      layout: 'total, sizes, prev, pager, next, jumper', // 分页的配置信息
      pageSize: 10, // 每页的条数
      pageSizes: [10, 30, 50, 100, 200] // 每页显示个数选择器的选项设置
    }
  },
  methods: {
    // *************************分页*****************
    /**
     * @param v  每页条数发生改变时返回值
     * @param name 每页条数绑定的变量名字
     * @param refreshName  刷新表格的函数名
     */
    handlePageSizeChange({ v, name = 'pageSize', refreshName }) {
      this[name] = v
      this[refreshName] && this[refreshName] instanceof Function && this[refreshName]()
    },
    /**
     * @param v  当前选中页发生改变时返回值
     * @param name 当前选中页绑定的变量名字
     * @param refreshName  刷新表格的函数名
     */
    handlePageCurrentChange({ v, name = 'currentPage', refreshName }) {
      this[name] = v
      this[refreshName] && this[refreshName] instanceof Function && this[refreshName]()
    },
    // *************************表格*****************
    /**
     * 初始化表格操作栏的loading字段(为每条数据添加loading字段)
     * @param params
     */
    initActionLoading(params, k) {
      if (!params.row[k + 'loading']) {
        this.$set(params.row, k + 'loading', false)
      }
      return params.row[k + 'loading']
    },
    /**
     * 将一个对象所有属性设置为空
     * @param data
     */
    initData(data) {
      data && Object.keys(data).map(k => {
        data[k] = ''
      })
    },
    /**
     * render函数中，循环某个属性，生成tag组件
     * @param params render函数params
     * @param h   render函数节点
     * @param k   对象的key值
     * @returns {[]}
     */
    getTagHtml({ params, h, k }) {
      let list = []
      let arr = []
      if (params.row[k]) {
        if (params.row[k] instanceof Array) {
          arr = params.row[k]
        } else {
          arr = params.row[k].split(',')
        }
      }
      arr.map(item => {
        if (item) {
          list.push(h('el-tag', {
            props: {
              size: 'mini'
            },
            style: {
              marginRight: '5px',
              marginTop: '5px'
            }
          }, item))
        }
      })
      return list
    },
    /**
     * 获取表格column的配置项
     * @param list
     * @returns {*}
     */
    getTableColumnConfig({ list }) {
      return list.filter(item => item.tableHide !== true)
    },
    /**
     * 获取action form的配置项
     * @param list
     * @returns {*}
     */
    getActionFormConfig({ list }) {
      return list.filter(item => item.formHide !== true)
    },
    /**
     * 根据数据类型，返回返回值
     * @param type
     * @returns {*}
     */
    getTypeDefaultValue(type) {
      if (typeof type === 'string') {
        type = type.toLowerCase()
      }
      const data = {
        'string': '',
        'number': 0,
        'array': [],
        'boolean': false
      }
      return data[type] === undefined ? '' : data[type]
    },
    /**
     * 根据数据类型，给form设置默认键值对
     * @param list
     */
    initFormValue({ list = [] }) {
      const obj = {}
      list.map(item => {
        if (item.formHide !== true) {
          obj[item.prop] = item.defaultValue === undefined ? this.getTypeDefaultValue(item.dataType) : item.defaultValue
        }
      })
      return obj
    }
  }
}
